﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;

namespace TangoFamilyAndGuide.Site
{
    public partial class ExploradorComentario : System.Web.UI.Page
    {
        List<Entidades.Comentario> comentario = new List<Entidades.Comentario>();
        protected void Page_Load(object sender, EventArgs e)
        {
            Entidades.Sesion sesion;
            if (!IsPostBack)
            {
                if (Funciones.SessionTimeOut(Session))
                {
                    Response.Redirect("~/SessionTimeout.aspx");
                }
                else
                {
                    NombreEntidadDropDownList.DataSource = Entidades.ComentarioEntidades.ComentarioEntidad.ListaMasSinInformar();
                    NombreEntidadDropDownList.Focus();
                    DataBind();
                }
            }
            sesion = (Entidades.Sesion)Session["Sesion"];
            List<Entidades.Permiso> permisoAdminSITEActive = sesion.Usuario.Permisos.FindAll(delegate(Entidades.Permiso p)
            {
                return p.TipoPermiso.Id == "AdminSITE";
            });
            if (permisoAdminSITEActive.Count == 0)
            {
                Response.Redirect("~/Home.aspx");
            }
        }
        protected void ComentarioPagingGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                DesSeleccionarFilas();
                ComentarioPagingGridView.PageIndex = e.NewPageIndex;
                List<Entidades.Comentario> lista;
                int CantidadFilas = 0;
                lista = RN.Comentario.Lista(out CantidadFilas, ComentarioPagingGridView.PageIndex, ComentarioPagingGridView.PageSize, ComentarioPagingGridView.OrderBy, NombreEntidadDropDownList.SelectedValue, IdEntidadTextBox.Text, IdUsuarioTextBox.Text, Session.SessionID, (Entidades.Sesion)Session["Sesion"]);
                ComentarioPagingGridView.VirtualItemCount = CantidadFilas;
                ViewState["lista"] = lista;
                ComentarioPagingGridView.DataSource = lista;
                ComentarioPagingGridView.DataBind();
            }
            catch (System.Threading.ThreadAbortException)
            {
                Trace.Warn("Thread abortado");
            }
            catch (Exception ex)
            {
                //CedeiraUIWebForms.Excepciones.Redireccionar(ex, "~/Excepcion.aspx");
                MensajeLabel.Text = ex.Message;
            }
        }
        protected void ComentarioPagingGridView_Sorting(object sender, GridViewSortEventArgs e)
        {
            try
            {
                DesSeleccionarFilas();
                List<Entidades.Comentario> lista = new List<Entidades.Comentario>();
                int CantidadFilas = 0;
                lista = RN.Comentario.Lista(out CantidadFilas, ComentarioPagingGridView.PageIndex, ComentarioPagingGridView.PageSize, ComentarioPagingGridView.OrderBy, NombreEntidadDropDownList.SelectedValue, IdEntidadTextBox.Text, IdUsuarioTextBox.Text, Session.SessionID, (Entidades.Sesion)Session["Sesion"]);
                ViewState["lista"] = lista;
                ComentarioPagingGridView.DataSource = (List<Entidades.Milonga>)ViewState["lista"];
                ComentarioPagingGridView.DataBind();
            }
            catch (System.Threading.ThreadAbortException)
            {
                Trace.Warn("Thread abortado");
            }
            catch (Exception ex)
            {
                //CedeiraUIWebForms.Excepciones.Redireccionar(ex, "~/Excepcion.aspx");
                MensajeLabel.Text = ex.Message;
            }
        }
        protected void ComentarioPagingGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes["onmouseover"] = "this.style.cursor='hand';this.style.textDecoration='underline';";
                e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';";
                
                //Color por estado distinto a Active
                if (e.Row.Cells[7].Text != "Active")
                {
                    e.Row.ForeColor = Color.Red;
                }
                //DropDownList ddlTipoDestacado = (DropDownList)e.Row.FindControl("ddlTipoDestacado");
                //if (ddlTipoDestacado != null)
                //{
                //    ddlTipoDestacado.DataSource = Entidades.TiposDestacado.TipoDestacado.ListaMasSinInformar();
                //    ddlTipoDestacado.DataBind();
                //    ddlTipoDestacado.SelectedValue = ComentarioPagingGridView.DataKeys[e.Row.RowIndex].Values[0].ToString();
                //}
            }
        }
        private void DesSeleccionarFilas()
        {
            ComentarioPagingGridView.SelectedIndex = -1;
        }
        protected void ComentarioPagingGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int item = Convert.ToInt32(e.CommandArgument);
            List<Entidades.Comentario> lista = (List<Entidades.Comentario>)ViewState["lista"];
            Entidades.Comentario comentario = lista[item];
            switch (e.CommandName)
            {
                case "Detalle":
                    //Session["Comentario"] = comentario;
                    //Response.Redirect("~/MilongaGuideConsultaDetallada.aspx");
                    break;
                case "CambiarEstado":
                    Session["Comentario"] = comentario;
                    Entidades.Evento Evento;
                    RN.Comentario.EventoPosible(out Evento, comentario, (Entidades.Sesion)Session["Sesion"]);
                    TituloConfirmacionLabel.Text = "Confirmar " + Evento.DescrEvento;
                    NombreEntidadLabel.Text = comentario.NombreEntidad;
                    IdEntidadLabel.Text = Convert.ToString(comentario.IdEntidad);
                    IdComentarioLabel.Text = Convert.ToString(comentario.Id);
                    IdReplicaLabel.Text = Convert.ToString(comentario.IdReplica);
                    ContenidoLabel.Text = comentario.Contenido;
                    FechaLabel.Text = comentario.Fecha.ToString();
                    EstadoLabel.Text = comentario.Estado;
                    UsuarioLabel.Text = comentario.IdUsuario;
                    ViewState["Comentario"] = comentario;
                    ModalPopupExtender1.Show();
                    break;
            }
        }
        protected void ComentarioPagingGridView_RowEditing(object sender, GridViewEditEventArgs e)
        {
            ComentarioPagingGridView.EditIndex = e.NewEditIndex;
            ComentarioPagingGridView.DataSource = ViewState["lista"];
            ComentarioPagingGridView.DataBind();
        }
        protected void ComentarioPagingGridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            ComentarioPagingGridView.EditIndex = -1;
            ComentarioPagingGridView.DataSource = ViewState["lista"];
            ComentarioPagingGridView.DataBind();
        }
        protected void ComentarioPagingGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            try
            {
                //List<Entidades.Comentario> comentarios = ((List<Entidades.Comentario>)ViewState["lista"]);
                //Entidades.Comentario comentarioActual = RN.Comentario.ObtenerCopia(comentarios[e.RowIndex]);
                //Entidades.Comentario comentario = comentarios[e.RowIndex];

                //string abusoContenido = ((TextBox)ComentarioPagingGridView.Rows[e.RowIndex].FindControl("txtRanking")).Text;
                ////string tipoDestacado = ((DropDownList)ComentarioPagingGridView.Rows[e.RowIndex].FindControl("ddlTipoDestacado")).SelectedValue;
                //if (abusoContenido != string.Empty)
                //{
                //    comentario.AbusoContenido = Convert.ToInt32(abusoContenido);
                //}
                //else
                //{
                //    throw new Exception("Debe informar el abuso de contenido. No puede estar vacío.");
                //}
                ////comentario.TipoDestacado = tipoDestacado;
                ////RN.Comentario.Modificar(comentarioActual, comentario, (Entidades.Sesion)Session["Sesion"]);
                //ComentarioPagingGridView.EditIndex = -1;
                //ComentarioPagingGridView.DataSource = ViewState["lista"];
                //ComentarioPagingGridView.DataBind();
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(this, GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('" + ex.Message.ToString().Replace("'", "") + "');</SCRIPT>", false);
            }
        }
        protected void ComentarioPagingGridView_SelectedIndexChanged(object sender, EventArgs e)
        {
        }
        protected void ComentarioPagingGridView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
        }
        protected void CambiarEstadoButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                try
                {
                    Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
                    Entidades.Comentario comentario = (Entidades.Comentario)ViewState["Comentario"];
                    Entidades.Evento Evento;
                    RN.Comentario.EventoPosible(out Evento, comentario, sesion);
                    RN.Comentario.CambiarEstado(comentario, Evento.Id, Evento.EstadoHst, sesion);
                    BuscarButton_Click(BuscarButton, new EventArgs());
                    Funciones.PersonalizarControlesMaster(Master, true, sesion);
                }
                catch (Exception ex)
                {
                    MensajeLabel.Text = "Problemas al cambiar el estado del Comentario." + ex.Message;
                }
            }
        }
        protected void BuscarButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                MensajeLabel.Text = String.Empty;
                List<Entidades.Comentario> lista = new List<Entidades.Comentario>();
                int CantidadFilas = 0;
                lista = RN.Comentario.Lista(out CantidadFilas, ComentarioPagingGridView.PageIndex, ComentarioPagingGridView.PageSize, ComentarioPagingGridView.OrderBy, NombreEntidadDropDownList.SelectedValue, IdEntidadTextBox.Text, IdUsuarioTextBox.Text, Session.SessionID, (Entidades.Sesion)Session["Sesion"]);
                 if (MensajeLabel.Text == "")
                {
                    ComentarioPagingGridView.VirtualItemCount = CantidadFilas;
                    ViewState["lista"] = lista;
                    //Grilla
                    ComentarioPagingGridView.DataSource = lista;
                    ComentarioPagingGridView.DataBind();
                    if (lista.Count == 0)
                    {
                        ComentarioPagingGridView.DataSource = null;
                        ComentarioPagingGridView.DataBind();
                        MensajeLabel.Text = "No se han encontrado Comentarios que satisfagan la busqueda";
                    }
                }
            }
        }
    }
}